package cn.itcast.order.service;

import cn.itcast.order.mapper.OrderMapper;
import cn.itcast.order.pojo.Order;
import cn.itcast.order.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

@Service
public class OrderService {

    @Autowired
    private OrderMapper orderMapper;

    @Autowired
    private RestTemplate restTemplate;


    public Order queryOrderById(Long orderId) {
        // 1.查询订单T
        Order order = orderMapper.findById(orderId);

        //2.远程查询user，
        //2.1 url地址
        //因为userservice是集群，多个url地址，不知道获取那个地址，就需要在restemplate方法上，加上loadbalanced这个注解
        String url = "http://userservice/user/"+ order.getUserId();
        //2.2发起调用
        //User.class返回值类型
        User user = restTemplate.getForObject(url, User.class);
        //存入，封装order并返回
        order.setUser(user);
        // 4.返回
        return order;
    }
    //使用restemplate的方法
    public Order queryOrderById2(Long orderId) {
        // 1.查询订单T
        Order order = orderMapper.findById(orderId);

        //2.远程查询user，利用restemplate
        //需配置restTemplate,被ioc容器管理
        //自动装配
        //2.1 url地址
        String url = "http://localhost:8081/user/"+ order.getUserId();
        //2.2发起调用
        //User.class返回值类型
        User user = restTemplate.getForObject(url, User.class);
        //存入，封装order并返回
        order.setUser(user);
        // 4.返回
        return order;
    }
}
